// promise 异步编程

// function timeout(ms) {
//     return new Promise((resolve, reject) => {
//       setTimeout(resolve, ms, 'done');
//     });
//   }
  
// console.log('begin');
// timeout(1000).then((value) => {
// console.log(value);
// });


// promise 链式调用

// function timeout(ms) {
//     return new Promise((resolve, reject) => {
//       setTimeout(resolve, ms, 'done');
//     });
//   }
// console.log('begin');
// timeout(1000).then((value) => {
//   console.log(value);
//   return timeout(1000);
// }).then(()=>{
//   console.log('over');
// });

// Proise 传递参数

// new Promise((resolve, reject) => {
//     // resolve(32);
//     reject('errmsg');
//   }).then(a => console.log("success: "+a) , b => console.log("err: "+b));

//   Promise.all()

// 生成一个Promise对象的数组
// const promises = [2, 3, 5, 7, 11, 13].map(function (id) {
// return getJSON('/post/' + id + ".json");
// });

// Promise.all(promises).then(function (posts) {
// // ...
// }).catch(function(reason){
// // ...
// });


function Promise2(fun){

    // 完善这里的代码，实现 Promise 效果

    let callBack = null;

    const then = function(cb){
        callBack = cb;
    }

    const resolve = (val) => {
        callBack(val);
    };

    fun(resolve);

    return {
        then,
    };

}

function timeout(ms) {
  return new Promise2((resolve) => {
    setTimeout(() => {
        resolve(32);
    }, ms, 'done');
  });
}

timeout(3000).then((v) => {
  console.log('我3秒后被输出', v);
});

const fs = require('fs');
// fs.readFile('./package.json', (err, fileData) => {
//     console.log(fileData.toString());
// })

const fileData = fs.readFileSync('./package.json');
console.log(fileData.toString());


const arr  = [2,3,4];

arr[Symbol.iterator]


